/*-*-C-*-
 * Window object Info dialogue for the Window CSE
 */


#include "resed.h"
#include "main.h"

#include "swicall.h"
#include "wimp.h"
#include "resformat.h"
#include "newmsgs.h"
#include "dbox.h"
#include "registry.h"

#include "format.h"
#include "windowedit.h"
#include "icondefs.h"
#include "windinfo.h"


static WindowPtr infowin;


error * windinfo_load_prototypes ()
{
   ER ( wimp_load_template("WindInfo", &infowin) );
   ER ( swi (Wimp_CreateWindow,  R1, &infowin->visarea,
             OUT,  R0, &infowin->handle,  END) );

   return registry_register_window (infowin->handle, WindInfo, NULL);
}


/*
 * Open the Window object info dialogue box.
 */


error * windinfo_open (WindowObjPtr window, PointPtr position)
{
    char s[MAX_OBJECT_NAME+2];  /* allows for " *" to indicate modified */

    strcpy (s, window->name);

#if DEBUG
    if (window->modified)
        strcat (s, " *");
#endif

    dbox_setstring (infowin, I_WINDINFO_NAME, s);

    return ( swi ( Wimp_CreateSubMenu,
                   R1, infowin->handle,
                   R2, position->x,
                   R3, position->y,
                   END ) );
}


/*
 * Respond to OPEN_WINDOW_REQUEST.  "win" is the return block
 * from Wimp_Poll and is not a complete window structure.
 */

error * windinfo_open_window (WindowPtr win)
{
    infowin->visarea = win->visarea;
    infowin->scrolloffset = win->scrolloffset;
    infowin->behind = win->behind;
    return swi (Wimp_OpenWindow, R1, infowin, END);
}
